package code;


import java.rmi.RemoteException;
import java.rmi.server.*;
import java.util.HashMap;

class Banque extends UnicastRemoteObject implements BanqueInterface {
	
	private HashMap<String,Compte> comptes ;
	
	public Banque() throws RemoteException{
		super();
		comptes = new HashMap<String,Compte>();
	}

	public Compte ouvrirCompte(String nom, String password) throws Exception,RemoteException{
		Compte nouveauCpte;
		
		if(comptes.get(nom)==null){
		  nouveauCpte = new Compte(nom,password,0);
		} else throw new Exception("Compte existe déjà");
		
	
		comptes.put(nom,nouveauCpte);

		return nouveauCpte;
	
	}
	
	public Compte verifie(String nom, String password) throws RemoteException{
		Compte moncompte = comptes.get(nom) ;
		
		if(moncompte != null){
			return moncompte;
		}
		if(!moncompte.getPassword().equals(password)){
			System.out.println("Mot de passe incorrecte");
			return null;
		}
		return moncompte;	
	}

	public int fermerCompte(String nom, String password)throws RemoteException{
		int solde = 0 ;
		if(comptes.get(nom)!=null){
			solde = comptes.get(nom).getSolde();
			comptes.remove(nom);
		}
		return solde;
	}

	public void deposer(int somme, Compte c) throws RemoteException{
		int nouveauSolde = c.getSolde()+somme;
		c.setSolde(nouveauSolde);
	}
	
	public int retirer(int somme, Compte c) throws RemoteException{
		int nouveauSolde = c.getSolde() - somme;
		c.setSolde(nouveauSolde);
		
		return nouveauSolde;
	}
	
	public int balance (Compte c) throws RemoteException{
		return c.getSolde();
	}

}
